﻿using Mt.Site.Application.ContentManagement.Dto;
using Mt.Site.Application.Dto;
using Mt.Site.Application.Dto.Add;
using Mt.Site.Core.ContentManagement.Values;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Mt.Site.Application.ContentManagement
{
    public interface IContentAppService : IBackEndAppService
    {
        Task ResetListApiCacheAsync();

        Task<Dictionary<string, object>> GetContentForEditAsync(GetContentForEditInput input);

        Task<PagedContent<Dictionary<string, object>>> GetContentListByPagedAsync(PagedContentInput input);
  
        Task<Guid> CreateOrUpdateAsync(CreateOrUpdateInput input);

        Task<ContentConfig> GetConfigAsync(GetConfigInput input);

        Task<ConfigAndPermisions> GetConfigAndPermisionsAsync(GetConfigInput input);

        Task DeleteAysnc(MenuAndIdInput<Guid> input);

        Task DeleteListAysnc(EntityIdListWithMenuIdDto input);

        Task SetStatusAsync(SetStatusWithMenuIdInput input);

        Task SwapObjectSortAsync(SwapSortNumberWithMenuIdInput input);

        Task SetNewOrderNumberAsync(NewSortNumberWithMenuIdInput input);

        ContentSelectionDto GetContentSelectionDto();
    }
}
